/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * CreacionProyectos.java
 *
 * Created on 30/09/2011, 11:04:54 AM
 */

package GUI.AdministracionProyectos;

import BE.Cliente;
import BE.Enunciado;
import BE.EnunciadoPt;
import BE.PapelTrabajo;
import BE.PlantillaMarcoReferencia;
import BE.PlantillaPapelTrabajo;
import BE.Proyecto;
import BE.Seccion;
import BE.SeccionPt;
import BL.ClienteBl;
import BL.EnunciadoBl;
import BL.EnunciadoPtBl;
import BL.PapelTrabajoBl;
import BL.PlantillaMarcoReferenciaBl;
import BL.PlantillaPapelTrabajoBl;
import BL.ProyectoBl;
import BL.SeccionBl;
import BL.SeccionPtBl;
import GUI.AdministracionPlantillas.BusquedaMarcoReferencia;
import GUI.AdministracionPlantillas.MantPapelTrabajo;
import GUI.AdministracionUsuarios.UtilUsuarios;
import GUI.Principal;
import java.awt.Color;
import java.awt.Dialog.ModalExclusionType;
import java.util.List;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author CarLita
 */
public class CreacionProyectos extends javax.swing.JPanel {
    Principal ventanaPrincipal;
    PlantillaMarcoReferencia marcoReferencia;
    PlantillaMarcoReferenciaBl marcoReferenciaBl;
    PlantillaPapelTrabajoBl plantillaPTBl;
    PapelTrabajoBl papelTrabajoBl;
    ClienteBl clienteBl;
    Proyecto proyecto;
    ProyectoBl proyectoBl;    
    private PlantillaMarcoReferencia marcoReferenciaBuscado;
    /** Creates new form CreacionProyectos */
    public CreacionProyectos() {
        initComponents();
    }

    public CreacionProyectos(Principal ventanaPrincipal) {
        this.ventanaPrincipal = ventanaPrincipal;
        initComponents();
        bloquearPestaña(true);
        papelTrabajoBl = new PapelTrabajoBl();
        clienteBl = new ClienteBl();
        proyectoBl = new ProyectoBl();
        marcoReferenciaBl= new PlantillaMarcoReferenciaBl();
        plantillaPTBl = new PlantillaPapelTrabajoBl();
        btnAgregarPapelTrabajo.setVisible(false);
        btnAgregarPapelTrabajo.setEnabled(false);
        bloquearPorPermisos();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        tabProyecto = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        cmbAuditorLider = new javax.swing.JComboBox();
        jLabel5 = new javax.swing.JLabel();
        txtMarcoRef = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        txtNombreProyecto = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        txtObjetivos = new javax.swing.JTextField();
        btnBuscarMarcoRef = new javax.swing.JButton();
        jLabel10 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        btnAgregarMiembro = new javax.swing.JButton();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        txtTelefono = new javax.swing.JTextField();
        jLabel14 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jLabel16 = new javax.swing.JLabel();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        btnGuardar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        btnLimpiar = new javax.swing.JButton();
        txtRazonSocial = new javax.swing.JTextField();
        txtDireccion = new javax.swing.JTextField();
        txtRUC = new javax.swing.JTextField();
        txtCorreo = new javax.swing.JTextField();
        txtNombreContacto = new javax.swing.JTextField();
        jLabel20 = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        txtDescripcion = new javax.swing.JTextArea();
        jScrollPane1 = new javax.swing.JScrollPane();
        lstMiembros = new javax.swing.JList();
        dateInicio = new com.toedter.calendar.JDateChooser();
        dateFin = new com.toedter.calendar.JDateChooser();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblPapelTrabajo = new javax.swing.JTable();
        btnAgregarPapelTrabajo = new javax.swing.JButton();
        btnEditarPapelTrabajo = new javax.swing.JButton();
        btnEliminarPapelTrabajo = new javax.swing.JButton();
        btnRefrescar = new javax.swing.JButton();

        jLabel2.setText("Fecha de auditoría");

        jLabel3.setText("desde:");

        jLabel8.setText("hasta:");

        jLabel4.setText("Equipo:");
        jLabel4.setEnabled(false);

        cmbAuditorLider.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "-", "Juan Perez" }));
        cmbAuditorLider.setEnabled(false);

        jLabel5.setText("Marco de Referencia:");

        txtMarcoRef.setEditable(false);

        jLabel1.setText("Nombre (*):");

        jLabel9.setText("Descripción:");

        btnBuscarMarcoRef.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionProyectos/find.gif"))); // NOI18N
        btnBuscarMarcoRef.setText("Buscar");
        btnBuscarMarcoRef.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBuscarMarcoRefActionPerformed(evt);
            }
        });

        jLabel10.setText("Auditor Líder:");
        jLabel10.setEnabled(false);

        jButton2.setText("-");
        jButton2.setEnabled(false);

        btnAgregarMiembro.setText("+");
        btnAgregarMiembro.setEnabled(false);

        jLabel11.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel11.setText("Información del Proyecto");

        jLabel12.setText("RUC (*):");

        jLabel13.setText("Razón Social (*):");

        txtTelefono.setNextFocusableComponent(txtCorreo);

        jLabel14.setText("Dirección (*):");

        jLabel15.setText("Teléfono (*):");

        jLabel16.setText("Correo:");

        jLabel17.setText("Nombre Contacto:");

        jLabel18.setText("Objetivos:");

        btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionPlantillas/guardar.png"))); // NOI18N
        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionPlantillas/cancelar.png"))); // NOI18N
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        btnLimpiar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionPlantillas/limpiar.png"))); // NOI18N
        btnLimpiar.setText("Limpiar");
        btnLimpiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnLimpiarActionPerformed(evt);
            }
        });

        txtRazonSocial.setNextFocusableComponent(txtDireccion);

        txtDireccion.setNextFocusableComponent(txtTelefono);

        txtRUC.setNextFocusableComponent(txtRazonSocial);

        txtCorreo.setNextFocusableComponent(txtNombreContacto);

        jLabel20.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel20.setText("Información del Cliente");

        txtDescripcion.setColumns(20);
        txtDescripcion.setFont(new java.awt.Font("Tahoma", 0, 11));
        txtDescripcion.setRows(5);
        jScrollPane3.setViewportView(txtDescripcion);

        lstMiembros.setBackground(new java.awt.Color(240, 240, 240));
        lstMiembros.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        lstMiembros.setEnabled(false);
        jScrollPane1.setViewportView(lstMiembros);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addComponent(jLabel11))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addComponent(jLabel1)
                        .addGap(52, 52, 52)
                        .addComponent(txtNombreProyecto, javax.swing.GroupLayout.PREFERRED_SIZE, 280, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel9)
                            .addComponent(jLabel18)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(1, 1, 1)
                                .addComponent(jLabel2)))
                        .addGap(10, 10, 10)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(10, 10, 10)
                                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 280, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(10, 10, 10)
                                .addComponent(txtObjetivos, javax.swing.GroupLayout.PREFERRED_SIZE, 280, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addGap(4, 4, 4)
                                .addComponent(dateInicio, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel6)
                                .addGap(10, 10, 10)
                                .addComponent(jLabel8)
                                .addGap(4, 4, 4)
                                .addComponent(dateFin, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addComponent(jLabel7)
                        .addGap(4, 4, 4)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(jLabel10)
                                .addGap(15, 15, 15)
                                .addComponent(cmbAuditorLider, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(2, 2, 2)
                                .addComponent(jLabel4)
                                .addGap(10, 10, 10)
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 182, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(10, 10, 10)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(btnAgregarMiembro, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addComponent(jLabel20))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(31, 31, 31)
                        .addComponent(jLabel13)
                        .addGap(16, 16, 16)
                        .addComponent(txtRazonSocial, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(60, 60, 60)
                        .addComponent(jLabel17)
                        .addGap(22, 22, 22)
                        .addComponent(txtNombreContacto, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(31, 31, 31)
                        .addComponent(jLabel14)
                        .addGap(33, 33, 33)
                        .addComponent(txtDireccion, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(31, 31, 31)
                        .addComponent(jLabel15)
                        .addGap(34, 34, 34)
                        .addComponent(txtTelefono, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(131, 131, 131)
                        .addComponent(btnGuardar, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(49, 49, 49)
                        .addComponent(btnLimpiar, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(49, 49, 49)
                        .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(20, 20, 20)
                                .addComponent(jLabel5)
                                .addGap(27, 27, 27)
                                .addComponent(txtMarcoRef, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(10, 10, 10)
                                .addComponent(btnBuscarMarcoRef, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                .addGap(31, 31, 31)
                                .addComponent(jLabel12)
                                .addGap(55, 55, 55)
                                .addComponent(txtRUC, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(60, 60, 60)
                                .addComponent(jLabel16)))
                        .addGap(73, 73, 73)
                        .addComponent(txtCorreo, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(54, 54, 54))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(11, 11, 11)
                .addComponent(jLabel11)
                .addGap(5, 5, 5)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(jLabel1))
                    .addComponent(txtNombreProyecto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(6, 6, 6)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel9)
                        .addGap(101, 101, 101)
                        .addComponent(jLabel18)
                        .addGap(17, 17, 17)
                        .addComponent(jLabel2))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(11, 11, 11)
                        .addComponent(txtObjetivos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(10, 10, 10)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(6, 6, 6)
                                .addComponent(jLabel3))
                            .addComponent(dateInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel6)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(6, 6, 6)
                                .addComponent(jLabel8))
                            .addComponent(dateFin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(140, 140, 140)
                        .addComponent(jLabel7))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel10)
                            .addComponent(cmbAuditorLider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(6, 6, 6)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel4)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(59, 59, 59)
                        .addComponent(btnAgregarMiembro)
                        .addGap(17, 17, 17)
                        .addComponent(jButton2)))
                .addGap(2, 2, 2)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel5)
                            .addComponent(txtMarcoRef, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(19, 19, 19)
                        .addComponent(jLabel20))
                    .addComponent(btnBuscarMarcoRef))
                .addGap(15, 15, 15)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(jLabel12))
                    .addComponent(txtRUC, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(jLabel16))
                    .addComponent(txtCorreo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(11, 11, 11)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel13)
                    .addComponent(txtRazonSocial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel17)
                    .addComponent(txtNombreContacto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(10, 10, 10)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(jLabel14))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(1, 1, 1)
                        .addComponent(txtDireccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(13, 13, 13)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel15)
                    .addComponent(txtTelefono, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(25, 25, 25)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnGuardar)
                    .addComponent(btnLimpiar)
                    .addComponent(btnCancelar)))
        );

        tabProyecto.addTab("Datos Proyecto", jPanel1);

        tblPapelTrabajo.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null}
            },
            new String [] {
                "Id", "Nombre"
            }
        ));
        ocultarIdTabla();
        tblPapelTrabajo.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                tblPapelTrabajoMousePressed(evt);
            }
        });
        jScrollPane2.setViewportView(tblPapelTrabajo);

        btnAgregarPapelTrabajo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionPlantillas/new doc.png"))); // NOI18N
        btnAgregarPapelTrabajo.setText("<html>    Agregar ");
        btnAgregarPapelTrabajo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnAgregarPapelTrabajo.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnAgregarPapelTrabajo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarPapelTrabajoActionPerformed(evt);
            }
        });

        btnEditarPapelTrabajo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionPlantillas/edit.gif"))); // NOI18N
        btnEditarPapelTrabajo.setText("Editar");
        btnEditarPapelTrabajo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarPapelTrabajoActionPerformed(evt);
            }
        });

        btnEliminarPapelTrabajo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/AdministracionPlantillas/minus white.png"))); // NOI18N
        btnEliminarPapelTrabajo.setText("Eliminar");
        btnEliminarPapelTrabajo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarPapelTrabajoActionPerformed(evt);
            }
        });

        btnRefrescar.setText("Refrescar");
        btnRefrescar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRefrescarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(24, 24, 24)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 618, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnRefrescar, javax.swing.GroupLayout.DEFAULT_SIZE, 93, Short.MAX_VALUE)
                    .addComponent(btnEliminarPapelTrabajo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnEditarPapelTrabajo, javax.swing.GroupLayout.DEFAULT_SIZE, 93, Short.MAX_VALUE)
                    .addComponent(btnAgregarPapelTrabajo, javax.swing.GroupLayout.DEFAULT_SIZE, 93, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(33, 33, 33)
                        .addComponent(btnEditarPapelTrabajo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnEliminarPapelTrabajo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnRefrescar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnAgregarPapelTrabajo, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(25, 25, 25)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 420, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(34, Short.MAX_VALUE))
        );

        tabProyecto.addTab("Papeles de Trabajo", jPanel2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(tabProyecto, javax.swing.GroupLayout.DEFAULT_SIZE, 768, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tabProyecto, javax.swing.GroupLayout.Alignment.TRAILING)
        );
    }// </editor-fold>//GEN-END:initComponents

    private void btnAgregarPapelTrabajoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarPapelTrabajoActionPerformed
        new LlenadoPapelTrabajo(marcoReferencia,proyecto, ventanaPrincipal).setVisible(true);
        buscarPapelesTrabajo();
    }//GEN-LAST:event_btnAgregarPapelTrabajoActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        String msjError = validarCampos();
        if (msjError.isEmpty()){
            boolean creado = guardarProyecto();
            if (creado){
                bloquearPestaña(false);
                JOptionPane.showMessageDialog(this, "El nuevo proyecto ha sido creado", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                colorearCampos();
            }
             else {
                JOptionPane.showMessageDialog(this, "Ha ocurrido un error en la creación", "Error", JOptionPane.ERROR_MESSAGE);
             }
        }
         else {
            JOptionPane.showMessageDialog(this, msjError, "Error", JOptionPane.ERROR_MESSAGE);
         }
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        mostrarMantProyectos();
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void mostrarMantProyectos(){
        ventanaPrincipal.panelProyectos.mantenimientoProyectos.setVisible(true);        
        limpiar();        
        ventanaPrincipal.panelProyectos.remove(this);            
    }
    
    private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLimpiarActionPerformed
        limpiar();
    }//GEN-LAST:event_btnLimpiarActionPerformed

    private void btnBuscarMarcoRefActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBuscarMarcoRefActionPerformed
        BusquedaMarcoReferencia ventBusqueda = new BusquedaMarcoReferencia(this);        
        ventBusqueda.setVisible(true);
    }//GEN-LAST:event_btnBuscarMarcoRefActionPerformed

    private void btnEditarPapelTrabajoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarPapelTrabajoActionPerformed
        if (tblPapelTrabajo.getSelectedRow() == -1){
            JOptionPane.showMessageDialog(this, "Seleccione el papel de trabajo a editar", "Error", JOptionPane.ERROR_MESSAGE);
            return;
        }
        abrirPT(Principal.MODO_EDICION);
    }//GEN-LAST:event_btnEditarPapelTrabajoActionPerformed

    private void btnEliminarPapelTrabajoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarPapelTrabajoActionPerformed
        if (tblPapelTrabajo.getSelectedRow()==-1){
            JOptionPane.showMessageDialog(this, "Seleccione el papel de trabajo a eliminar", "Error", JOptionPane.ERROR_MESSAGE);
            return;
        }
        int idPapelTrabajo = getIdPapelTrabajoSeleccionado();
        int opcion = JOptionPane.showConfirmDialog(this, "Desea eliminar el papel de trabajo seleccionado?", TOOL_TIP_TEXT_KEY, WIDTH);
        if (opcion == JOptionPane.YES_OPTION){
            boolean eliminado = papelTrabajoBl.eliminarPorId(idPapelTrabajo);
            if (eliminado) JOptionPane.showMessageDialog(this, "El papel de trabajo ha sido eliminado del proyecto", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
            else JOptionPane.showMessageDialog(this, "Ocurrió un problema en la grabación del proyecto", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btnEliminarPapelTrabajoActionPerformed

private void btnRefrescarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefrescarActionPerformed
    buscarPapelesTrabajo();
}//GEN-LAST:event_btnRefrescarActionPerformed

private void tblPapelTrabajoMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblPapelTrabajoMousePressed
    if (evt.getClickCount()>1){
        abrirPT(Principal.MODO_LECTURA);
        buscarPapelesTrabajo();
    }
}//GEN-LAST:event_tblPapelTrabajoMousePressed

    public void limpiar(){
        txtCorreo.setText("");
        txtDescripcion.setText("");
        txtDireccion.setText("");                
        txtMarcoRef.setText("");
        txtNombreContacto.setText("");
        txtNombreProyecto.setText("");
        txtObjetivos.setText("");
        txtRUC.setText("");
        txtRazonSocial.setText("");
        txtTelefono.setText("");
        colorearCampos();
        //cmbAuditorLider.setSelectedIndex(-1);
        //lstMiembros.setModel(null);
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAgregarMiembro;
    private javax.swing.JButton btnAgregarPapelTrabajo;
    private javax.swing.JButton btnBuscarMarcoRef;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnEditarPapelTrabajo;
    private javax.swing.JButton btnEliminarPapelTrabajo;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnLimpiar;
    private javax.swing.JButton btnRefrescar;
    private javax.swing.JComboBox cmbAuditorLider;
    private com.toedter.calendar.JDateChooser dateFin;
    private com.toedter.calendar.JDateChooser dateInicio;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JList lstMiembros;
    private javax.swing.JTabbedPane tabProyecto;
    private javax.swing.JTable tblPapelTrabajo;
    private javax.swing.JTextField txtCorreo;
    private javax.swing.JTextArea txtDescripcion;
    private javax.swing.JTextField txtDireccion;
    private javax.swing.JTextField txtMarcoRef;
    private javax.swing.JTextField txtNombreContacto;
    private javax.swing.JTextField txtNombreProyecto;
    private javax.swing.JTextField txtObjetivos;
    private javax.swing.JTextField txtRUC;
    private javax.swing.JTextField txtRazonSocial;
    private javax.swing.JTextField txtTelefono;
    // End of variables declaration//GEN-END:variables

    private void bloquearPestaña(boolean b) {
        tabProyecto.setEnabledAt(tabProyecto.getTabCount()-1, !b);

    }

    void buscarPapelesTrabajo(){
        List papeles = papelTrabajoBl.buscarPorIdProyecto(proyecto.getIdproyecto());
        llenarTabla(papeles);
    }

    private String validarCampos() {
        String msjError ="";
        if (txtNombreProyecto.getText().trim().isEmpty()){
            msjError+= "\n\t- Nombre proyecto";
            txtNombreProyecto.setBackground(Color.PINK);
        }
        if (txtRUC.getText().trim().isEmpty()){
            msjError+= "\n\t- RUC";
            txtRUC.setBackground(Color.PINK);
        }
        if (txtRazonSocial.getText().trim().isEmpty()){
            msjError+= "\n\t- Razón Social";
            txtRazonSocial.setBackground(Color.PINK);
        }
        if (txtDireccion.getText().trim().isEmpty()){
            msjError+= "\n\t- Dirección";
            txtDireccion.setBackground(Color.PINK);
        }
        if (txtTelefono.getText().trim().isEmpty()){
            msjError+= "\n\t- Telefono";
            txtTelefono.setBackground(Color.PINK);
        }
        
        if (!msjError.isEmpty()){
            if (msjError.indexOf('-')!= msjError.lastIndexOf('-')){
                msjError= "Debe completar los campos:"+ msjError;
            }
             else {
                msjError= "Debe completar el campo " + msjError.substring(3);
             }
            return msjError;
        }
        return "";
    }

    private void colorearCampos(){
        txtNombreProyecto.setBackground(Color.WHITE);
        txtRUC.setBackground(Color.WHITE);
        txtDireccion.setBackground(Color.WHITE);
        txtTelefono.setBackground(Color.WHITE);
        txtRazonSocial.setBackground(Color.WHITE);
    }

    private boolean guardarProyecto() {
        //cliente
        boolean ok=true;
        Cliente c = new Cliente();
        c.setRuc(txtRUC.getText().trim());
        c.setRazonSocial(txtRazonSocial.getText().trim());
        c.setTelefonoContacto(txtTelefono.getText().trim());
        c.setDireccion(txtDireccion.getText().trim());
        c.setCorreo(txtCorreo.getText().trim());
        c.setNombreContacto(txtNombreContacto.getText().trim());
        
        boolean clienteGuardado = clienteBl.guardar(c);
        //proyecto
        if (clienteGuardado){
            proyecto = new Proyecto();
            proyecto.setNombre(txtNombreProyecto.getText().trim());
            proyecto.setDescripcion(txtDescripcion.getText().trim());
            proyecto.setEstado(Proyecto.ESTADO_CREADO);            
            proyecto.setMarcoReferencia(marcoReferenciaBuscado.getNombre());
            proyecto.setFechaInicio(dateInicio.getDate());
            proyecto.setFechaFin(dateFin.getDate());
            proyecto.setCliente(c);
            boolean tieneMarco = !txtMarcoRef.getText().trim().isEmpty();
            if (tieneMarco){                
                proyecto.setIdMarcoReferencia(marcoReferenciaBuscado.getIdPlantilla());
            }

            ok = proyectoBl.guardar(proyecto);
            proyecto.setIdproyecto(proyectoBl.buscarIdPorNombre(proyecto.getNombre()));
            
            if (ok && tieneMarco){
                proyectoBl.guardarEstructuraProyecto(proyecto, proyecto.getIdMarcoReferencia());
            }
            buscarPapelesTrabajo();
        }        
        return ok;
    }

    private PapelTrabajo getPapelTrabajoSeleccionado() {
        int idPtSeleccionado =  Integer.parseInt(tblPapelTrabajo.getValueAt(tblPapelTrabajo.getSelectedRow(), 0).toString());
        return new PapelTrabajoBl().buscarPorId(idPtSeleccionado);
    }

    private int getIdPapelTrabajoSeleccionado() {
        return Integer.parseInt(tblPapelTrabajo.getValueAt(tblPapelTrabajo.getSelectedRow(), 0).toString());
    }

    private void abrirPT(int modo) {
        PapelTrabajo papelTrabajo = getPapelTrabajoSeleccionado();
        new LlenadoPapelTrabajo(papelTrabajo, modo, ventanaPrincipal).setVisible(true);               
    }

    void ocultarIdTabla(){
        tblPapelTrabajo.getColumn("Id").setWidth(0);
        tblPapelTrabajo.getColumn("Id").setMaxWidth(0);
        tblPapelTrabajo.getColumn("Id").setMinWidth(0);
    }

    private void llenarTabla(List papeles) {
        Vector<String> tableHeaders = new Vector<String>();
        Vector tableData = new Vector();
        tableHeaders.add("Id");
        tableHeaders.add("Nombre");

        PapelTrabajo p;
        for(Object o : papeles) {
            p = (PapelTrabajo)o;
            Vector<Object> fila = new Vector<Object>();
            fila.add(p.getIdPapelTrabajo());
            fila.add(p.getNombre());           
            tableData.add(fila);
        }

        tblPapelTrabajo.setModel(new DefaultTableModel(tableData, tableHeaders));
        ocultarIdTabla();
    }

    /**
     * @param marcoReferenciaBuscado the marcoReferenciaBuscado to set
     */
    public void setMarcoReferenciaBuscado(PlantillaMarcoReferencia marcoReferenciaBuscado) {
        this.marcoReferenciaBuscado = marcoReferenciaBuscado;
        txtMarcoRef.setText(marcoReferenciaBuscado.getNombre());        
    }

    private void bloquearPorPermisos() {
        if (ventanaPrincipal.getPermisos().getPermisoProyecto().indexOf(UtilUsuarios.VER)>-1){
            btnGuardar.setVisible(false);
            btnGuardar.setEnabled(false);
            btnAgregarMiembro.setEnabled(false);
            btnAgregarMiembro.setVisible(false);
            btnAgregarPapelTrabajo.setEnabled(false);
            btnAgregarPapelTrabajo.setVisible(false);
            btnBuscarMarcoRef.setVisible(false);
            btnBuscarMarcoRef.setEnabled(false);
            btnCancelar.setVisible(false);
            btnCancelar.setEnabled(false);
            btnEditarPapelTrabajo.setEnabled(false);
            btnEditarPapelTrabajo.setVisible(false);
            btnEliminarPapelTrabajo.setEnabled(false);
            btnEliminarPapelTrabajo.setVisible(false);
            
        }        
        if (ventanaPrincipal.getPermisos().getPermisoProyecto().indexOf(UtilUsuarios.CREAR)>-1){
            btnGuardar.setVisible(true);
            btnGuardar.setEnabled(true);
            btnAgregarMiembro.setEnabled(true);
            btnAgregarMiembro.setVisible(true);
            btnAgregarPapelTrabajo.setEnabled(true);
            btnAgregarPapelTrabajo.setVisible(true);
            btnBuscarMarcoRef.setVisible(true);
            btnBuscarMarcoRef.setEnabled(true);
            btnCancelar.setVisible(true);
            btnCancelar.setEnabled(true);
            btnEditarPapelTrabajo.setEnabled(false);
            btnEditarPapelTrabajo.setVisible(false);
            btnEliminarPapelTrabajo.setEnabled(true);
            btnEliminarPapelTrabajo.setVisible(true);
        }                
        if (ventanaPrincipal.getPermisos().getPermisoProyecto().indexOf(UtilUsuarios.EDITAR)>-1){
            btnGuardar.setVisible(true);
            btnGuardar.setEnabled(true);
            btnAgregarMiembro.setEnabled(true);
            btnAgregarMiembro.setVisible(true);
            btnAgregarPapelTrabajo.setEnabled(true);
            btnAgregarPapelTrabajo.setVisible(true);
            btnBuscarMarcoRef.setVisible(true);
            btnBuscarMarcoRef.setEnabled(true);
            btnCancelar.setVisible(true);
            btnCancelar.setEnabled(true);
            btnEditarPapelTrabajo.setEnabled(true);
            btnEditarPapelTrabajo.setVisible(true);
            btnEliminarPapelTrabajo.setEnabled(true);
            btnEliminarPapelTrabajo.setVisible(true);
            
        }
   }

}
